/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package info.server;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 *
 * @author mark
 */
public class ServerScreen extends JFrame implements ActionListener {
    //Declareren van GUI-elementen en andere variabelen
    private InfoServer main;
    
    private File file;
    private PrintWriter writer;
    private FileWriter filewriter;
    private StringBuffer buffer;
    
    private String dateTime;
    
    private JTextArea logtext;
    private JPanel panel;
    private String log = "";
    
    private JMenuBar menubar;
    private JMenu menu_options;
    private JMenuItem logbestand;
    
    private JScrollPane scrollpane;
    
    public ServerScreen(InfoServer main)
    {
        //Aangeven wat het hoofdscherm is
        this.main = main;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //Nieuw JPanel aanmaken
        panel = new JPanel();
        setSize(640, 480);
        
        //Nieuwe textarea maken
        logtext = new JTextArea(33, 55);
        
        //Menu toevoegen
        menubar = new JMenuBar();
        menu_options = new JMenu("Options");
        logbestand = new JMenuItem("Logbestand");
        
        //Scrollpanel maken en hier de textarea aan toevoegen
        scrollpane = new JScrollPane(logtext);        
        //Voeg menu en scrollpanel toe aan het hoofdpanel
        panel.add(scrollpane, BorderLayout.CENTER);
        panel.add(menubar);
        menubar.add(menu_options);
        //Voeg de menu options toe aan het menu
        menu_options.add(logbestand);
        //Voeg actionlistener toe aan de menuitems.
        logbestand.addActionListener(this);
        //Geef een aantal eigenschappen van het scherm op.
        setTitle("Info Server");
        setContentPane( panel );
        setJMenuBar( menubar );
    }
    
    //Methode om messages aan de log toe te voegen
    public void addToLog(String add)
    {
        //Maak 2 formats aan voor datums.
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        DateFormat logFileDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        Date logFileDate = new Date();
        this.dateTime = dateFormat.format(date);
        String logDate = logFileDateFormat.format(logFileDate);
        //Maak de logtext aan en zet deze op het logscherm
        log = log += dateTime + " " + add + "\n";
        refreshLogText(log);
        String t = "";
        //Maak een filewriter aan die de logmessages naar een bestand schrijft.
        try {
            file = new File("logs\\log" + logDate + ".txt");
            filewriter = new FileWriter(file, true);
            writer = new PrintWriter(filewriter);
            t += (dateTime + " " + add + "\n");
            writer.println(t);
        } catch(java.io.IOException ex){
            ex.printStackTrace();
        } finally{
            //Sluit de filewriter.    
            writer.close();   
        }
    }
    //Methode om de logtext te refreshen.
    public void refreshLogText(String log)
    {
        //Zet de huidige logtext in de textarea
        logtext.setText(log);
    }
    
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource() == logbestand)
        {
            addToLog(log);
        }
    }
    
}
